//
//  AppError.m
//  XiaoMiao
//
//  Created by 23 on 2017/11/5.
//  Copyright © 2017年 smallyou. All rights reserved.
//

#import "AppError.h"

NSString * const AppNetworkErrorDomain = @"tech.chmn.XiaoMiao";

static NSDictionary *AppErrorMapDict;

@implementation AppError

+ (void)initialize {
    NSString *path = [[NSBundle mainBundle] pathForResource:@"AppNetworkErrorMap" ofType:@"plist"];
    AppErrorMapDict = [NSDictionary dictionaryWithContentsOfFile:path];
}

+ (instancetype)errorWithCode:(NSInteger)errCode errMessage:(NSString *)errMessage {
    if (errCode == 84512) { // 登录过期or未登录
        [AppNotificationHelpper postNotificationName:kLoginExpireNotification object:nil];
    }
    return [self errorWithDomain:AppNetworkErrorDomain code:errCode userInfo:errMessage ? @{NSLocalizedDescriptionKey : errMessage} : nil];
}

+ (instancetype)errorWithNSError:(NSError *)error {
    return [self errorWithDomain:error.domain code:error.code userInfo:error.userInfo];
}

- (NSString *)errorMessage {
    if ([self.domain isEqualToString:AppNetworkErrorDomain]) { // App后台错误
        NSString *errStr = AppErrorMapDict[@(self.code)];
        if (!StringNotEmpty(errStr)) {
            errStr = self.localizedDescription;
        }
        return errStr;
    } else { // 网络或其它错误
        return [[self class] getNetworkErrStrWithCode:self.code];
    }
}

+ (NSString *)getNetworkErrStrWithCode:(NSInteger)code {
    NSString *errStr = nil;
    if (code <= -1 && code >= -1103) {// NSURL Error
        if (code == NSURLErrorNotConnectedToInternet) { // 网络断开
            errStr = NSLocalizedString(@"net.disconnect", nil);
        }else if (code == NSURLErrorTimedOut) { // 网络超时
            errStr = NSLocalizedString(@"net.timeout", nil);
        }else if (code == NSURLErrorCannotConnectToHost){ //服务器连不上
            errStr = NSLocalizedString(@"net.connectError", nil);
        }
        else { // 后台错误提示或者其他
            errStr = NSLocalizedString(@"net.othererror", nil);
        }
    } else { // HTTP Error
        if (code == 0) {
            errStr = NSLocalizedString(@"通用的失败状态码,请联系客服!", nil);
        } else if (code == 10001) {
            errStr = NSLocalizedString(@"手机号码为空", nil);
        } else if (code == 10002) {
            errStr = NSLocalizedString(@"已经获取了验证码", nil);
        } else if (code == 10003) {
            errStr = NSLocalizedString(@"对不起，您的验证码已经失效！请重新获取", nil);
        } else if (code == 10004) {
            errStr = NSLocalizedString(@"您的验证码错误", nil);
        } else if (code == 10005) {
            errStr = NSLocalizedString(@"你已经获取了验证码，请在1分钟后再获取", nil);
        } else if (code == 10006) {
            errStr = NSLocalizedString(@"登录超时，请重新登录", nil);
        } else if (code == 10007) {
            errStr = NSLocalizedString(@"对不起，您的验证码已经失效！请重新获取", nil);
        } else if (code == 10008) {
            errStr = NSLocalizedString(@"验证失败", nil);
        } else if (code == 10009) {
            errStr = NSLocalizedString(@"验证码成功", nil);
        } else if (code == 20001) {
            errStr = NSLocalizedString(@"用户钱包不存在欠费", nil);
        } else if (code == 20002) {
            errStr = NSLocalizedString(@"有租借的货位，不能退还保证金", nil);
        } else if (code == 20003) {
            errStr = NSLocalizedString(@"用户被封号了", nil);
        } else if (code == 30001) {
            errStr = NSLocalizedString(@"支付失败", nil);
        } else if (code == 30002) {
            errStr = NSLocalizedString(@"积分不足80", nil);
        } else if (code == 30003) {
            errStr = NSLocalizedString(@"钱包不足50", nil);
        } else if (code == 40001) {
            errStr = NSLocalizedString(@"用户已经被冻结", nil);
        } else if (code == 40002) {
            errStr = NSLocalizedString(@"用户不存在", nil);
        } else if (code == 40003) {
            errStr = NSLocalizedString(@"当前用户不是门店管理员", nil);
        } else if (code == 50001) {
            errStr = NSLocalizedString(@"门店被禁用", nil);
        } else if (code == 50002) {
            errStr = NSLocalizedString(@"门店不存在", nil);
        } else if (code == 50003) {
            errStr = NSLocalizedString(@"门店使用中", nil);
        } else if (code == 50004) {
            errStr = NSLocalizedString(@"取消关注商铺", nil);
        } else if (code == 50005) {
            errStr = NSLocalizedString(@"关注商铺", nil);
        } else if (code == 50006) {
            errStr = NSLocalizedString(@"取消关注商品", nil);
        } else if (code == 50007) {
            errStr = NSLocalizedString(@"关注商品", nil);
        } else if (code == 50008) {
            errStr = NSLocalizedString(@"商品不存在", nil);
        } else if (code == 50009) {
            errStr = NSLocalizedString(@"在售中商品，不能删除", nil);
        }
        else if (code == 60001) {
            errStr = NSLocalizedString(@"环套不存在", nil);
        } else if (code == 60002) {
            errStr = NSLocalizedString(@"携带环套", nil);
        } else if (code == 60003) {
            errStr = NSLocalizedString(@"环套没有放回", nil);
        } else if (code == 60003) {
            errStr = NSLocalizedString(@"环套没有放回", nil);
        } else if (code == 60004) {
            errStr = NSLocalizedString(@"含有未购买的商品", nil);
        } else if (code == 60005) {
            errStr = NSLocalizedString(@"上架的环套比货位的数量多，无法上架", nil);
        } else if (code == 60006) {
            errStr = NSLocalizedString(@"环套不存在", nil);
        } else if (code == 70001) {
            errStr = NSLocalizedString(@"优惠卷过期", nil);
        } else if (code == 70002) {
            errStr = NSLocalizedString(@"优惠卷不存在", nil);
        } else if (code == 70003) {
            errStr = NSLocalizedString(@"优惠卷已经领取，不能重复领取", nil);
        } else if (code == 90001) {
            errStr = NSLocalizedString(@"参数有误", nil);
        } else {
            errStr = NSLocalizedString(@"net.apierror", nil);
        }
    }
    return errStr;
}


@end

